// axios 的基础封装
import axios from "axios";
import router from "@/router";
import { useUserStore } from "@/stores/user";
import { ElMessage } from 'element-plus';
import 'element-plus/theme-chalk/el-message.css';

const httpInstance = axios.create({
  baseURL: 'https://pcapi-xiaotuxian-front-devtest.itheima.net',
  timeout: 60000
});

httpInstance.interceptors.request.use((config) => {
  const userStore = useUserStore();
  const token = userStore.userInfo.token;
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
}, (e) => Promise.reject(e));

httpInstance.interceptors.response.use((res) => res.data, (e) => {
  // 统一错误提示
  ElMessage({ type: 'warning', message: e.response.data.message });
  // 401 token 失效处理
  if (e.response.status === 401) {
    const userStore = useUserStore();
    userStore.clearUserInfo();
    router.push('/login');
  }
  return Promise.reject(e);
});

export default httpInstance;